package org.niux.AutoLoginQQ.timer;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.TimerTask;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.niux.AutoLoginQQ.VO.QQNumVO;
import org.niux.AutoLoginQQ.common.Constant;
import org.niux.AutoLoginQQ.operate.LoginQQ;
import org.niux.AutoLoginQQ.ui.Main;

/**
 * 
 * Copyright (c) 2009,niux<br>
 * All rights reserved.<br>
 * 
 * 文件名称：ScanTaskTimer.java<br>
 * 摘    要：监测登录队列的轮循器<br>
 * <br>
 * 当前版本：<br>
 * 作    者：mingxian Email: <a href="mailto:liangmingxian@gmail.com">liangmingxian@gmail.com</a><br>
 * 完成日期：@since 2012-9-12<br>
 * <br>
 * 取代版本：<br>
 * 原作者  ：<br>
 * 完成日期：@since Oct 22, 2009<br>
 */
public class ScanTaskTimer extends TimerTask {
	
	private Log log = LogFactory.getLog(this.getClass());
	
	private Main gui;
	
	public ScanTaskTimer(Main gui) {
		super();
		this.gui = gui;
	}

	@Override
	public void run() {
		if(Constant.SCAN_TASK_TIMER_LOGGER){
			return;
		}
		
		List<QQNumVO> tempList = new ArrayList<QQNumVO>();
		
		tempList.addAll(Constant.LOGIN_QUEEN);
		
		log.debug("==========轮循器开始监测=============");
		log.debug("当前已经登录的QQ个数是"+ Constant.LOGIN_COUNT);
		log.debug("队列中等待登录的个数是"+ tempList.size());
		
		if(Constant.SHUTDOWN){
			log.debug("选择了自动关机");
			if(tempList.isEmpty() && Constant.ALREADY_LOGIN_QUEEN.isEmpty()){
				log.debug("正在自动关机");
				try {
					Runtime.getRuntime().exec("shutdown -s -t 10");
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
		//当当前登录数小于限制登录个数时才执行
		if(Constant.LOGIN_COUNT < Integer.parseInt(Constant.SAME_TIME_LOGIN)){
			LoginQQ loginQQ = new LoginQQ(gui);
			
			int count = Integer.parseInt(Constant.SAME_TIME_LOGIN) - Constant.LOGIN_COUNT; //可以登录的个数
			log.debug("还可以登录的QQ个数是"+ count);
			
			List<QQNumVO> addLogin = new ArrayList<QQNumVO>();
			
			if(tempList.size() < count){
				for (QQNumVO qq : tempList) {
					if(qq.isLogin()){ //如果此QQ已经登录
						continue;
					}
					
					addLogin.add(qq);
				}
			} else {
				int i = 0;
				
				for (QQNumVO qq : tempList) {
					if(i < count){
						System.out.println(i);
						if(qq.isLogin()){ //如果此QQ已经登录
							continue;
						}
						
						addLogin.add(qq);
						i++;
					}
				}
			}
			
			loginQQ.loginQQ(addLogin);
		}
	}

}
